package org.example.supplychain.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;

/**
 * 应用配置类，用于配置 RestTemplate 对象。
 */
@Configuration
public class AppConfig {

    /**
     * 创建 RestTemplate Bean。
     *
     * @return RestTemplate 对象
     */
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

    /**
     * 监控信息导出调度器类，用于定时执行监控信息导出任务。
     */
    @Component
    @EnableScheduling
    public static class MetricsExporterScheduler {

        private final MetricsExporterService metricsExporterService;

        /**
         * 构造函数，用于注入 MetricsExporterService 对象。
         *
         * @param metricsExporterService MetricsExporterService 对象用于执行监控信息导出任务
         */
        @Autowired
        public MetricsExporterScheduler(MetricsExporterService metricsExporterService) {
            this.metricsExporterService = metricsExporterService;
        }

        /**
         * 每隔60秒执行一次监控信息导出任务。
         */
        @Scheduled(fixedRate = 60000) // 每隔60s执行一次
        public void exportMetrics() {
            metricsExporterService.exportMetricsToFile();
        }
    }
}
